package com.hysf.ioc.pro5_ioc_import;

import com.hysf.ioc.pro5_ioc_import.other.Apple;
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
import org.springframework.beans.factory.support.RootBeanDefinition;
import org.springframework.context.annotation.ImportBeanDefinitionRegistrar;
import org.springframework.core.type.AnnotationMetadata;

/*
* SpringBoot 框架层代码
* */
public class MyImportBeanDefinitionRegister implements ImportBeanDefinitionRegistrar {
	
	/*
	* 这两个参数的作用：
	* 	1. AnnotationMetadata：当前类的注解信息， 把它放到Import中 则可以获取到当前类的注解信息；
	* 	2. BeanDefinitionRegistry：BeanDefinition注册类；
	* */
	@Override
	public void registerBeanDefinitions(AnnotationMetadata importingClassMetadata, BeanDefinitionRegistry registry) {
//		String className = importingClassMetadata.getClassName(); // 类的全路径名称
//		System.out.println(className + " is imported");
//
//		String packageName = ClassUtils.getPackageName(className);
//		System.out.println(packageName);

		boolean b = registry.containsBeanDefinition(Apple.class.getName());
		String beanId = Apple.class.getSimpleName().substring(0,1).toLowerCase() + Apple.class.getSimpleName().substring(1);

		if (!b){
			RootBeanDefinition beanDefinition = new RootBeanDefinition(Apple.class);
			registry.registerBeanDefinition(beanId, beanDefinition); // 注册Bean
		}
		// 注册组件
//		registry.registerBeanDefinition("grape", new RootBeanDefinition(packageName + ".other.Grape"));
	}
}
